package org.facilscrum.persistencia;

import org.facilscrum.beans.Usuarios;
import org.facilscrum.beans.*;
import org.facilscrum.controller.*;
import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
import java.util.*;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.util.Map;
import java.util.Iterator;
import java.util.HashMap;
import java.util.Map;
 import javax.sql.DataSource;
import org.facilscrum.generales.Mensajeria;
import org.facilscrum.generales.DataGManager;


/**
*
* @author
*/

public class UsuariosPersistencia implements Serializable {
private static final long serialVersionUID = 1L;
public static Exception excepcion;
public static boolean esMensaje = false;
public static Connection con = null;
public static java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/facilscrum/properties/mensajes");
static DataGManager dataGManager;
static List<Usuarios> list;

public UsuariosPersistencia(){
         esMensaje =false;
}



/**
*
* insert()
*/

public static boolean insert (Usuarios usuarios ) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return false;
  }
      PreparedStatement pinsert = null;
      String sql = "insert into usuarios(username,nombre,idgruposusuario,activo,cargo,email,password,iddepartamento,cedula)  values(?,?,?,?,?,?,?,?,?)";
      pinsert = con.prepareStatement(sql);
              pinsert.setString(1,usuarios.getUsername());
        pinsert.setString(2,usuarios.getNombre());
        pinsert.setString(3,usuarios.getIdgruposusuario());
        pinsert.setString(4,usuarios.getActivo());
        pinsert.setString(5,usuarios.getCargo());
        pinsert.setString(6,usuarios.getEmail());
        pinsert.setString(7,usuarios.getPassword());
        pinsert.setString(8,usuarios.getIddepartamento());
        pinsert.setString(9,usuarios.getCedula());
      int filas= pinsert.executeUpdate();
      pinsert.close();
      return true;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return false;
 }


/**
*
* update()
*/

public static boolean update(Usuarios usuarios ) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return false;
  }
      PreparedStatement pupdate = null;
      String sql = "update usuarios set  username=?, nombre=?, idgruposusuario=?, activo=?, cargo=?, email=?, password=?, iddepartamento=?, cedula=?  where  username ='"+usuarios.getUsername()+"'  ";
      pupdate= con.prepareStatement(sql);
      pupdate.setString(1,usuarios.getUsername());
pupdate.setString(2,usuarios.getNombre());
pupdate.setString(3,usuarios.getIdgruposusuario());
pupdate.setString(4,usuarios.getActivo());
pupdate.setString(5,usuarios.getCargo());
pupdate.setString(6,usuarios.getEmail());
pupdate.setString(7,usuarios.getPassword());
pupdate.setString(8,usuarios.getIddepartamento());
pupdate.setString(9,usuarios.getCedula());
      int filas= pupdate.executeUpdate();
      pupdate.close();
      if (filas <= 0){
          excepcion=new Exception(bundle.getString("msg.noupdate"));
          esMensaje =true;
          return false;
      }
      return true;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return false;
}


/**
*
* update()
*/

public static boolean update(String sqlupdate ) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return false;
  }
      PreparedStatement pupdate = null;
      String sql = "update  usuarios set " + sqlupdate +"";
      pupdate= con.prepareStatement(sql);
      int filas= pupdate.executeUpdate();
      pupdate.close();
      if (filas <= 0){
          excepcion=new Exception(bundle.getString("msg.noupdate"));
          esMensaje =true;
          return false;
      }
      return true;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return false;
}


/**
*
* updatePrimaryKey()
*/

public static boolean updatePrimaryKey(Usuarios usuarios_old , Usuarios usuarios) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return false;
  }
      PreparedStatement pupdate = null;
      String sql = "update usuarios set  username=?  where  username ='"+usuarios_old.getUsername()+"'  ";
      pupdate= con.prepareStatement(sql);
      pupdate.setString(1,usuarios.getUsername());
      int filas= pupdate.executeUpdate();
      pupdate.close();
      if (filas <= 0){
          excepcion=new Exception(bundle.getString("msg.noupdate"));
          esMensaje =true;
          return false;
      }
      return true;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return false;
}


/**
*
* delete()
*/

public static boolean delete(Usuarios usuarios ) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return false;
  }
      PreparedStatement pdelete = null;
      String sql = "delete from usuarios  where  username = ?  ";
      pdelete= con.prepareStatement(sql);
      pdelete.setString(1,usuarios.getUsername());
      int filas= pdelete.executeUpdate();
      pdelete.close();
      if (filas <= 0){
          excepcion=new Exception(bundle.getString("msg.nodelete"));
          esMensaje =true;
          return false;
      }
      return true;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return false;
}


/**
*
* delete()
*/

public static boolean delete(String sqldelete ) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return false;
  }
      PreparedStatement pdelete = null;
      String sql = "delete from usuarios where " + sqldelete +"";
      pdelete= con.prepareStatement(sql);
      int filas= pdelete.executeUpdate();
      pdelete.close();
      if (filas <= 0){
          excepcion=new Exception(bundle.getString("msg.nodelete"));
          esMensaje =true;
          return false;
      }
      return true;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return false;
}


/**
*
* deleteAll()
*/

public static boolean deleteAll() {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return false;
  }
      PreparedStatement pdelete = null;
      String sql = "delete from usuarios  ";
      pdelete= con.prepareStatement(sql);
      int filas= pdelete.executeUpdate();
      pdelete.close();
      if (filas <= 0){
          excepcion=new Exception(bundle.getString("msg.nodeleteall"));
          esMensaje =true;
          return false;
      }
      return true;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return false;
}


/**
*
* exists()
*/



public static boolean exists(Usuarios usuarios) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return false;
  }
      String sql = "select * from usuarios where username='"+usuarios.getUsername()+"'";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +" " + bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return false;
   }
    rs.close();
    psquery.close();
 return true;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return false;
}


/**
*
* findByPrimaryKey()
*/



public static Usuarios findByPrimaryKey(Usuarios usuarios) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
      String sql = "select * from usuarios where username='"+usuarios.getUsername()+"'";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
   departamento2 =  departamentoController.findByPrimaryKey(departamento);
   if (departamento2== null) {
       //no existe registro con ese codigo 
   } else {
   departamento= departamento2;
   usuarios.setDepartamento(departamento);
     }
   gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
   if (gruposusuarios2== null) {
       //no existe registro con ese codigo 
   } else {
   gruposusuarios= gruposusuarios2;
   usuarios.setGruposusuarios(gruposusuarios);
     }
            usuarios.setUsername(rs.getString("username"));
usuarios.setNombre(rs.getString("nombre"));
usuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
usuarios.setActivo(rs.getString("activo"));
usuarios.setCargo(rs.getString("cargo"));
usuarios.setEmail(rs.getString("email"));
usuarios.setPassword(rs.getString("password"));
usuarios.setIddepartamento(rs.getString("iddepartamento"));
usuarios.setCedula(rs.getString("cedula"));
    }
    rs.close();
    psquery.close();
 return usuarios;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* findByUsername()
*/

public static List<Usuarios> findByUsername(Usuarios usuarios,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
        list = new ArrayList<>();
      String sql = "select * from usuarios where username='"+usuarios.getUsername()+"'";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* findByNombre()
*/

public static List<Usuarios> findByNombre(Usuarios usuarios,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
        list = new ArrayList<>();
      String sql = "select * from usuarios where nombre='"+usuarios.getNombre()+"'";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* findByIdgruposusuario()
*/

public static List<Usuarios> findByIdgruposusuario(Usuarios usuarios,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
        list = new ArrayList<>();
      String sql = "select * from usuarios where idgruposusuario='"+usuarios.getIdgruposusuario()+"'";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* findByActivo()
*/

public static List<Usuarios> findByActivo(Usuarios usuarios,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
        list = new ArrayList<>();
      String sql = "select * from usuarios where activo='"+usuarios.getActivo()+"'";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* findByCargo()
*/

public static List<Usuarios> findByCargo(Usuarios usuarios,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
        list = new ArrayList<>();
      String sql = "select * from usuarios where cargo='"+usuarios.getCargo()+"'";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* findByEmail()
*/

public static List<Usuarios> findByEmail(Usuarios usuarios,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
        list = new ArrayList<>();
      String sql = "select * from usuarios where email='"+usuarios.getEmail()+"'";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* findByPassword()
*/

public static List<Usuarios> findByPassword(Usuarios usuarios,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
        list = new ArrayList<>();
      String sql = "select * from usuarios where password='"+usuarios.getPassword()+"'";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* findByIddepartamento()
*/

public static List<Usuarios> findByIddepartamento(Usuarios usuarios,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
        list = new ArrayList<>();
      String sql = "select * from usuarios where iddepartamento='"+usuarios.getIddepartamento()+"'";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* findByCedula()
*/

public static List<Usuarios> findByCedula(Usuarios usuarios,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
        list = new ArrayList<>();
      String sql = "select * from usuarios where cedula='"+usuarios.getCedula()+"'";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* locateByParameters()
*/

public static List<Usuarios> locateByParameters(Map parametros,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
       list = new ArrayList<>();
  String sql = "select * from usuarios";
  if (parametros != null) {
      Iterator it = parametros.entrySet().iterator();
      StringBuilder sb = new StringBuilder("");
      int i = 0;
      while (it.hasNext()) {
          if (i != 0){
            sb.append(" and ");
         }
         i++;
        Map.Entry e = (Map.Entry) it.next();
        sb.append(e.getKey() +"= '"+  e.getValue()+"'");
      }
      if (!sb.toString().equals("")){
         sql = sql + " where " + sb.toString();
      }
   }
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* Double func(String funcion, String campo)
*/



public static Double func(String funcion, String campo) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return 0.0;
  }
      String sql = "select "+funcion+"("+campo+") as contador from usuarios";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return 0.0;
   }
    Double tmp =0.0;
   rs.beforeFirst();
   while (rs.next()) {
    tmp =  rs.getDouble("contador");
    }
    rs.close();
    psquery.close();
 return tmp;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return 0.0;
}


/**
*
* Double func(String funcion, String campo,String where)
*/



public static Double func(String funcion, String campo, String where) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return 0.0;
  }
      String sql = "select "+funcion+"("+campo+") as contador from usuarios where "+where +" ";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return 0.0;
   }
    Double tmp =0.0;
   rs.beforeFirst();
   while (rs.next()) {
    tmp =  rs.getDouble("contador");
    }
    rs.close();
    psquery.close();
 return tmp;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return 0.0;
}


/**
*
* count()
*/



public static Integer count() {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return 0;
  }
      String sql = "select count(*) as contador from usuarios";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return 0;
   }
     rs.beforeFirst();
     while (rs.next()) {
      x =  rs.getInt("contador");
    }
    rs.close();
    psquery.close();
 return x;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return 0;
}


/**
*
* count(String sqlquery)
*/



public static Integer count(String sqlquery) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return 0;
  }
      String sql = "select count(*) as contador from usuarios where  " + sqlquery +"";
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return 0;
   }
   rs.beforeFirst();
   while (rs.next()) {
    x =  rs.getInt("contador");
    }
    rs.close();
    psquery.close();
 return x;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return 0;
}


/**
*
* query()
*/

public static List<Usuarios> query(String query,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
        list = new ArrayList<>();
  String sql = "select * from usuarios where " + query +"";
  if (query == null || query.equals("")) {
  return null;
   }
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* orderby()
*/

public static List<Usuarios> orderby(String query,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
        list = new ArrayList<>();
  String sql = "select * from usuarios order by " + query +"";
  if (query == null || query.equals("")) {
  return null;
   }
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
   
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
}


/**
*
* getListRecords()
*/

public static List<Usuarios> getListRecords(Map parametros,boolean withRelation) {
  excepcion = null;
  try {
      esMensaje =false;

  con= dataGManager.getCon();
  if (con == null) {
      excepcion=new Exception(bundle.getString("msg.noconecction"));
      return null;
  }
       list = new ArrayList<>();
  String sql = "select * from usuarios";
  if (parametros != null) {
      Iterator it = parametros.entrySet().iterator();
      StringBuilder sb = new StringBuilder("");
      while (it.hasNext()) {
        Map.Entry e = (Map.Entry) it.next();
        sb.append(e.getKey() +"="+  e.getValue());
      }
      if (!sb.toString().equals("")){
         sql = sql + " where " + sb.toString();
      }
   }
  PreparedStatement psquery = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
   ResultSet rs = psquery.executeQuery();
   rs.next();
   int x = rs.getRow();
   if (x == 0) {
          excepcion=new Exception(bundle.getString("msg.nofoundrecords") + "usuarios" +"  "+ bundle.getString("msg.withcode"));
          esMensaje =true;
      rs.close();
      psquery.close();
      return null;
   }
   rs.beforeFirst();
   while (rs.next()) {
       
Departamento departamento = new Departamento();
Departamento departamento2 = new Departamento();
DepartamentoController departamentoController = new DepartamentoController();
Gruposusuarios gruposusuarios = new Gruposusuarios();
Gruposusuarios gruposusuarios2 = new Gruposusuarios();
GruposusuariosController gruposusuariosController = new GruposusuariosController();
        Usuarios usuarios2 = new Usuarios(
         rs.getString("username"),rs.getString("nombre"),rs.getString("idgruposusuario"),rs.getString("activo"),rs.getString("cargo"),rs.getString("email"),rs.getString("password"),rs.getString("iddepartamento"),rs.getString("cedula"));
            
    departamento.setIddepartamento(rs.getString("iddepartamento"));
    gruposusuarios.setIdgruposusuario(rs.getString("idgruposusuario"));
            
  if(withRelation){
     departamento2 =  departamentoController.findByPrimaryKey(departamento);
     if (departamento2== null) {
       //not found records 
     } else {
     departamento= departamento2;
     usuarios2.setDepartamento(departamento);
       }
   }
  if(withRelation){
     gruposusuarios2 =  gruposusuariosController.findByPrimaryKey(gruposusuarios);
     if (gruposusuarios2== null) {
       //not found records 
     } else {
     gruposusuarios= gruposusuarios2;
     usuarios2.setGruposusuarios(gruposusuarios);
       }
   }
       list.add(usuarios2);
    }
    rs.close();
    psquery.close();
    return list;
   } catch (Exception e) {
      excepcion = e;
   } finally {
  }
  return null;
 }


}
